flowchart TD
A[Start] --> B{PUNKT DECYZYJNY}
B -->|Tak| C[AKCJA 1]
B -->|Nie| D[AKCJA 2]
C --> E[Koniec]
D --> E
Wprowadzenie
Kontakt: krzysztof.dyba@amu.edu.pl
Algorytm to zestaw precyzyjnie zdefiniowanych instrukcji krok po kroku służących do rozwiązania konkretnego problemu lub wykonania zadania w skończonym czasie.
Jest to jednoznaczna sekwencja operacji, która wykorzystuje dane wejściowe, przetwarza je zgodnie z określonymi zasadami i generuje dane wyjściowe.
Przepis kuchenny to instrukcja w jaki sposób przygotować składniki (dane wejściowe), aby otrzymać potrawę (dane wyjściowe).
flowchart TD
A[Start] --> B{PUNKT DECYZYJNY}
B -->|Tak| C[AKCJA 1]
B -->|Nie| D[AKCJA 2]
C --> E[Koniec]
D --> E
Prostokąt reprezentuje etap procesu.
Romb reprezentuje punkt decyzyjny, który rozgałęzia przepływ na podstawie warunków TAK/NIE lub PRAWDA/FAŁSZ.
Schemat blokowy to wizualna reprezentacja procesu, która ilustruje sekwencję kroków, decyzji i działań podejmowanych w celu osiągnięcia określonego celu.
W przeciwieństwie do algorytmu, cechuje się uproszczoną formą, przez co jest łatwiejszy w odbiorze.
Szukanie wartości maksymalnej w zbiorze
Dane wejściowe: Lista liczb.
Dane wyjściowe: Największa liczba z listy.
Kroki:
Ustaw pierwszą liczbę z listy jako największą.
Dla każdej liczby na liście:
Jeśli bieżąca liczba jest większa od największej, to ustaw ją na bieżącą.
Zwróć największą liczbę.
flowchart LR
A[Start] --> B[Ustaw pierwszy element jako maks]
B --> C[Dla każdego elementu z listy]
C --> D{Czy bieżący element jest większy od maks?}
D -- Tak --> E[Ustaw nowe maksimum]
D -- Nie --> F[Sprawdź kolejny element]
E --> F
F --> G{Czy są kolejne elementy do sprawdzenia?}
G -- Tak --> C
G -- Nie --> H[Zwróć maks]
H --> I[Koniec]
flowchart LR
A[Start] --> B[Ustaw pierwszy element jako maks]
B --> C[Dla każdego elementu z listy]
C --> D{Czy bieżący element jest większy od maks?}
D -- Tak --> E[Ustaw nowe maksimum]
D -- Nie --> F[Sprawdź kolejny element]
E --> F
F --> G{Czy są kolejne elementy do sprawdzenia?}
G -- Tak --> C
G -- Nie --> H[Zwróć maks]
H --> I[Koniec]Pseudokod – uproszczony sposób opisywania logiki algorytmu bez użycia ścisłej składni określonego języka programowania. Traktowany jest jako szkic kodu, zatem nie może zostać uruchomiony na komputerach.
ALGORYTM ZnajdzMaks(lista)
maks = lista[1]
FOR kazdego elementu IN lista:
IF element > maks THEN
maks = element
RETURN maks
Jakie są różnice między tymi dwoma blokami kodu?
Złożoność algorytmu to miara wzrostu zużycia zasobów przez algorytm wraz ze wzrostem wielkości danych wejściowych.
Główne typy:
Do opisania złożoności algorytmu powszechnie stosowana jest notacja dużego \(O\), opisująca najgorszy scenariusz działania.
| Notacja | Funkcja | Opis | Przykład |
|---|---|---|---|
| \(O(1)\) | Stała | Czas wykonania nie zależy od wielkości danych wejściowych | Dostęp do określonego elementu tablicy poprzez jego indeks |
| \(O(\log n)\) | Logarytmiczna | Zazwyczaj algorytm dzieli problem na pół przy każdym kroku | Wyszukiwanie binarne w uporządkowanej tablicy |
| \(O(n)\) | Liniowa | Czas rośnie wprost proporcjonalnie do ilości danych wejściowych | Iteracja po wszystkich elementach listy |
| \(O(n^2)\) | Kwadratowa | Czas rośnie wykładniczo do ilości danych wejściowych | Zagnieżdżone pętle |
Jaka jest złożoność czasowa powyższego algorytmu?
Algorytm geoprzestrzenny to procedura obliczeniowa służąca do przetwarzania i analizowania danych geoprzestrzennych (tj. w kontekście przestrzennym).
Są one przede wszystkim wykorzystywane w systemach informacji geograficznej do między innymi:
328 algorytmów (narzędzi) w 26 kategoriach:
802 algorytmów (narzędzi) w 16 kategoriach:
444 algorytmów (narzędzi) w 10 kategoriach:
Interfejsy definiują sposób, w jaki różne części systemu współdziałają ze sobą, umożliwiając im komunikację i wymianę informacji.
Geointerfejs odnosi się do interfejsu, który zapewnia dostęp do danych i usług geoprzestrzennych, umożliwiając interakcje pomiędzy różnymi systemami geoprzestrzennymi za pomocą interfejsu programowania aplikacji (API).
Otwarte interfejsy umożliwiają interoperacyjność między różnymi narzędziami, nawet jeśli są napisane w innych językach programowania lub używają odmiennych struktur do reprezentacji danych.
Interfejs wiersza poleceń (CLI) to oparty na tekście interfejs, który umożliwia użytkownikom interakcję z systemem lub oprogramowaniem poprzez wpisywanie poleceń w konsoli.
Wykorzystanie algorytmów programów GISowych jest możliwe poprzez powłokę systemową (np. bash czy PowerShell).
flowchart TD
A[R] --> B{{<a href='https://github.com/paleolimbot/geos'>geos</a>}}
B --> C[GEOS]
A --> D{{<a href='https://github.com/USDAForestService/gdalraster'>gdalraster</a>}}
D --> E[GDAL]
A --> F{{<a href='https://github.com/stevenpawley/Rsagacmd'>Rsagacmd</a>}}
F --> G[Saga GIS]
A --> H{{<a href='https://github.com/OSGeo/rgrass'>rgrass</a>}}
H --> I[Grass GIS]
A --> J{{<a href='https://github.com/r-spatial/qgisprocess'>qgisprocess</a>}}
J --> K[QGIS]
Wykorzystanie QGIS CLI za pośrednictwem pakietu qgisprocess w R:
library(qgisprocess)
qgis_search_algorithms("buffer")
#> provider_title group algorithm
#> 1 GDAL Vector geoprocessing gdal:buffervectors
#> 2 GRASS Vector (v.*) grass7:v.buffer
#> 3 QGIS (native c++) Vector geometry native:buffer
qgis_run_algorithm(
"native:buffer",
INPUT = "punkt.gpkg",
OUTPUT = "bufor.gpkg",
DISTANCE = 100
)
#> Geometry set for 1 feature
#> Geometry type: POLYGON
#> Dimension: XY
#> Bounding box: xmin: 411648 ymin: 5084491 xmax: 411668 ymax: 5084511
#> Projected CRS: NAD83 / UTM zone 20N
#> POLYGON ((411668 5084501, 411668 5084498, 4...Od wersji 3.11 dostępne są algorytmy geoprzestrzenne umożliwiające przetwarzanie danych rastrowych (47 algorytmów) oraz wektorowych (29 algorytmów). Przykładowo: